/********************************************************************* * * Copyright (C) 2002 Andrew Khan * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ***************************************************************************/ package jxl.write; import jxl.biff.DisplayFormat; import jxl.format.Format; /** * Static class which contains the available list of built in Number formats */ public final class NumberFormats { /** * Inner class which holds the format index */ private static class BuiltInFormat implements DisplayFormat, Format { /** * The built in number format index */ private int index; /** * The format string */ private String formatString; /** * Constructor, using the predetermined index * * @param i the index * @param s the string */ public BuiltInFormat(int i, String s) { index = i; formatString = s; } /** * Accessor for the format index * * @return the index */ public int getFormatIndex() { return index; } /** * Accessor to determine if this format has been initialized. Since it is * built in, this will always return TRUE * * @return TRUE, since this is a built in format */ public boolean isInitialized() { return true; } /** * Determines whether this format is a built in format * * @return TRUE, since this is a built in numerical format */ public boolean isBuiltIn() { return true; } /** * Initializes this format with a dynamically determined index value. * Since this is a built in, and hence the index value is predetermined, * this method has an empty body * * @param pos the pos in the number formats list */ public void initialize(int pos) { } /** * Accesses the excel format string which is applied to the cell * Note that this is the string that excel uses, and not the java * equivalent * * @return the cell format string */ public String getFormatString() { return formatString; } /** * Standard equals method * * @param o the object to compare * @return TRUE if the two objects are equal, FALSE otherwise */ public boolean equals(Object o) { if (o == this) { return true; } if (!(o instanceof BuiltInFormat)) { return false; } BuiltInFormat bif = (BuiltInFormat) o; return index == bif.index; } /** * Standard hash code method * * @return the hash code */ public int hashCode() { return index; } } // The available built in number formats // First describe the fairly bog standard formats /** * The default format. This is equivalent to a number format of '#' */ public static final DisplayFormat DEFAULT = new BuiltInFormat(0x0, "#"); /** * Formatting for an integer number. This is equivalent to a DecimalFormat * of "0" */ public static final DisplayFormat INTEGER = new BuiltInFormat(0x1, "0"); /** * Formatting for a float. This formats number to two decimal places. It * is equivalent to a DecimalFormat of "0.00" */ public static final DisplayFormat FLOAT = new BuiltInFormat(0x2, "0.00"); /** * Formatting for an integer that has a thousands separator. * Equivalent to a DecimalFormat of "#,##0" */ public static final DisplayFormat THOUSANDS_INTEGER = new BuiltInFormat(0x3, "#,##0"); /** * Formatting for a float that has a thousands separator. * Equivalent to a DecimalFormat of "#,##0.00" */ public static final DisplayFormat THOUSANDS_FLOAT = new BuiltInFormat(0x4, "#,##0.00"); /** * Formatting for an integer which is presented in accounting format * (ie. deficits appear in parentheses) * Equivalent to a DecimalFormat of "$#,##0;($#,##0)" */ public static final DisplayFormat ACCOUNTING_INTEGER = new BuiltInFormat(0x5, "$#,##0;($#,##0)"); /** * As ACCOUNTING_INTEGER except that deficits appear coloured red */ public static final DisplayFormat ACCOUNTING_RED_INTEGER = new BuiltInFormat(0x6, "$#,##0;($#,##0)"); /** * Formatting for an integer which is presented in accounting format * (ie. deficits appear in parentheses) * Equivalent to a DecimalFormat of "$#,##0;($#,##0)" */ public static final DisplayFormat ACCOUNTING_FLOAT = new BuiltInFormat(0x7, "$#,##0;($#,##0)"); /** * As ACCOUNTING_FLOAT except that deficits appear coloured red */ public static final DisplayFormat ACCOUNTING_RED_FLOAT = new BuiltInFormat(0x8, "$#,##0;($#,##0)"); /** * Formatting for an integer presented as a percentage * Equivalent to a DecimalFormat of "0%" */ public static final DisplayFormat PERCENT_INTEGER = new BuiltInFormat(0x9, "0%"); /** * Formatting for a float percentage * Equivalent to a DecimalFormat "0.00%" */ public static final DisplayFormat PERCENT_FLOAT = new BuiltInFormat(0xa, "0.00%"); /** * Formatting for exponential or scientific notation * Equivalent to a DecimalFormat "0.00E00" */ public static final DisplayFormat EXPONENTIAL = new BuiltInFormat(0xb, "0.00E00"); /** * Formatting for one digit fractions */ public static final DisplayFormat FRACTION_ONE_DIGIT = new BuiltInFormat(0xc,"?/?"); /** * Formatting for two digit fractions */ public static final DisplayFormat FRACTION_TWO_DIGITS = new BuiltInFormat(0xd,"??/??"); // Now describe the more obscure formats /** * Equivalent to a DecimalFormat "#,##0;(#,##0)" */ public static final DisplayFormat FORMAT1 = new BuiltInFormat(0x25, "#,##0;(#,##0)"); /** * Equivalent to FORMAT1 except deficits are coloured red */ public static final DisplayFormat FORMAT2 = new BuiltInFormat(0x26, "#,##0;(#,##0)"); /** * Equivalent to DecimalFormat "#,##0.00;(#,##0.00)" */ public static final DisplayFormat FORMAT3 = new BuiltInFormat(0x27, "#,##0.00;(#,##0.00)"); /** * Equivalent to FORMAT3 except deficits are coloured red */ public static final DisplayFormat FORMAT4 = new BuiltInFormat(0x28, "#,##0.00;(#,##0.00)"); /** * Equivalent to DecimalFormat "#,##0;(#,##0)" */ public static final DisplayFormat FORMAT5 = new BuiltInFormat(0x29, "#,##0;(#,##0)"); /** * Equivalent to FORMAT5 except deficits are coloured red */ public static final DisplayFormat FORMAT6 = new BuiltInFormat(0x2a, "#,##0;(#,##0)"); /** * Equivalent to DecimalFormat "#,##0.00;(#,##0.00)" */ public static final DisplayFormat FORMAT7 = new BuiltInFormat(0x2b, "#,##0.00;(#,##0.00)"); /** * Equivalent to FORMAT7 except deficits are coloured red */ public static final DisplayFormat FORMAT8 = new BuiltInFormat(0x2c, "#,##0.00;(#,##0.00)"); /** * Equivalent to FORMAT7 */ public static final DisplayFormat FORMAT9 = new BuiltInFormat(0x2e, "#,##0.00;(#,##0.00)"); /** * Equivalent to DecimalFormat "##0.0E0" */ public static final DisplayFormat FORMAT10 = new BuiltInFormat(0x30, "##0.0E0"); /** * Forces numbers to be interpreted as text */ public static final DisplayFormat TEXT = new BuiltInFormat(0x31, "@"); }